﻿using vudu.Datos.Fachada;
using vudu.Datos.SqlServer;
using System;
using vudu.Logica.Clases;
using System.Collections.Generic;
using NUnit.Framework;
using vudu.ClasesDominio;
using vudu.Logica.Comandos;
using vudu.Logica.Fachada;

namespace vudu.Pruebas
{

    [TestFixture]
    public class PruebaEnlaceDeDatosHorarioPreMatricula
    {

        #region Pruebas para SqlServerHorarioPreMatricula

        [Test]
        public void InsertarPrematricula()
        {
            SqlServerHorarioPreMatricula sqlServerHorarioPreMatricula = new SqlServerHorarioPreMatricula();
            Prematricula prematricula = new Prematricula();
            prematricula.Nombre = "Nueva";
            prematricula.Fecha = new DateTime(2012, 12, 02);
            prematricula.Estudiante.IdEst = 1;
            int prematriculaInsertada = sqlServerHorarioPreMatricula.InsertarPrematricula(prematricula);
            Assert.AreEqual(prematriculaInsertada, 8);
        }

        [Test]
        public void ConsultarMateriasPrematricula()
        {
            SqlServerHorarioPreMatricula sqlServerHorarioPreMatricula = new SqlServerHorarioPreMatricula();
            Estudiante estudiante = new Estudiante();
            estudiante.IdEst = 1;
            Assert.AreEqual(sqlServerHorarioPreMatricula.ConsultarMateriasPrematricula(estudiante, 1).Count, 7);
            EnlaceLogico faEnlaceLogico = new EnlaceLogico();
            Assert.AreEqual(faEnlaceLogico.ConsultarMateriasPrematricula(estudiante, 1).Count, 7);
        }

        [Test]
        public void ConsultarSeccionesDeUnaMateria()
        {
            SqlServerHorarioPreMatricula sqlServerHorarioPreMatricula = new SqlServerHorarioPreMatricula();
            Materia materia = new Materia();
            materia.Codigo = 20;
            Assert.AreEqual(sqlServerHorarioPreMatricula.ConsultarSeccionesDeUnaMateria(materia).Count, 1);

        }

        [Test]
        public void ConsultarHorarioSecciones()
        {
            SqlServerHorarioPreMatricula sqlServerHorarioPreMatricula = new SqlServerHorarioPreMatricula();
            SeccionMateria seccionMateria = new SeccionMateria();
            seccionMateria.Codigo = 10;
            Assert.AreEqual(sqlServerHorarioPreMatricula.ConsultaHorarioClaseSeccion(seccionMateria).Count, 1);
        }

        [Test]
        public void PruebaControladorConsultarMateriaPrematricula()
        {
            ControladorPreMatricula controladorPreMatricula = new ControladorPreMatricula();
            Estudiante estudiante = new Estudiante();
            estudiante.IdEst = 1;
            Assert.AreEqual(controladorPreMatricula.ConsultarMateriasPrematriculas(estudiante, 1).Count, 7);

        }

        [Test]
        public void PruebaComandoConsultarMateriaPrematricula()
        {
            Estudiante estudiante = new Estudiante();
            estudiante.IdEst = 1;
            ComandoConsultarMateriasPrematricula comando = new ComandoConsultarMateriasPrematricula(estudiante, 1);
            Assert.AreEqual(comando.Ejecutar().Count, 7);
        }

        [Test]
        public void PruebaEnlanceLogicoConsultarMateriaPrematricula()
        {
            EnlaceLogico enlaceLogico = new EnlaceLogico();
            Estudiante estudiante = new Estudiante();
            estudiante.IdEst = 1;
            List<Materia> misMaterias = new List<Materia>();
            misMaterias = enlaceLogico.ConsultarMateriasPrematricula(estudiante, 1);
            Assert.AreEqual(misMaterias.Count, 7);
        }

        [Test]
        public void PruebaConsultarPrematricula()
        {
            SqlServerHorarioPreMatricula sqlServerHorarioPreMatricula = new SqlServerHorarioPreMatricula();
            Estudiante estudiante = new Estudiante();
            estudiante.IdEst = 1;
            Assert.AreEqual(sqlServerHorarioPreMatricula.ConsultarPrematricula(estudiante).Count, 4);
        }

        [Test]
        public void PruebaConsultarInformacionPrematricula()
        {
            SqlServerHorarioPreMatricula sqlServerHorarioPreMatricula = new SqlServerHorarioPreMatricula();
            Prematricula prematricula = new Prematricula();
            prematricula.Codigo = 21;
            Assert.AreEqual(sqlServerHorarioPreMatricula.ConsultarInformacionPrematricula(prematricula).Count, 1);
        }

        [Test]
        public void PruebaFachadaConsultarInformacionPrematricula()
        {
            EnlaceLogico fachada = new EnlaceLogico();
            List<SeccionMateria> materias = new List<SeccionMateria>();
            Prematricula prematricula = new Prematricula();
            prematricula.Codigo = 21;
            materias = fachada.ConsultarInformacionPrematricula(prematricula);
            Assert.AreEqual(24,materias[0].Codigo);
            Assert.AreEqual(materias[0].HorasClase[0].IdHorarioClase,47);
            Assert.AreEqual(materias[0].HorasClase[1].IdHorarioClase, 48);
        }

        [Test]
        public void PruebaConsultarInformacionHorario()
        {
            SqlServerHorarioPreMatricula sqlServerHorarioPreMatricula = new SqlServerHorarioPreMatricula();
            Prematricula prematricula = new Prematricula();
            prematricula.Codigo = 1;
            Assert.AreEqual(sqlServerHorarioPreMatricula.ConsultarInformacionPrematriculaHorario(prematricula).Count,5);
        }

        [Test]
        public void PruebaInsertarPrematricula()
        {
            Prematricula prematricula = new Prematricula();
            prematricula.Nombre = "Prueba";
            prematricula.Fecha = new DateTime(2012,02,02);
            prematricula.Estudiante.IdEst = 1;

            Assert.AreEqual(10, new SqlServerHorarioPreMatricula().InsertarPrematricula(prematricula));
        }

        [Test]
        public void PruebaConsultarInformacionEstudiante()
        {
            Estudiante estudiante = new Estudiante();
            estudiante.IdEst = 1;

            SqlServerHorarioPreMatricula sqlServer = new SqlServerHorarioPreMatricula();
            Assert.True(sqlServer.ConsultarInformacionEstudiante(estudiante).Nombre.Equals("Pedro Perez"));
        }

        [Test]
        public void PruebaEliminarPrematricula ()
        {
            Prematricula prematricula = new Prematricula();
            prematricula.Codigo = 1;
            EnlaceLogico fachada = new EnlaceLogico();
            Assert.True(fachada.EliminarPrematricula(prematricula));
        }

        [Test]
        public void PruebaFachadaAprobarPrematricula()
        {
            Prematricula prematricula = new Prematricula();
            prematricula.Codigo = 22;
            prematricula.Estudiante.IdEst = 2;
            Assert.True(new EnlaceDatos().AprobarPrematricula(prematricula));
        }
        #endregion
    }
}
    